Zpristupneni property proceduralniho typu

Otázka od: Martin Burle

3. 12. 2003 11:32

Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
spravne) property. Udelal jsem si objekt, ktery drzi nejake property, vcetne
jedne proceduralniho typu:

TCanEditProps = class(TPersistent)
  private
    FcanEditProc: T FcanEditProc;
   ...
  published
     property CanEditProc: TCanEditProc read FcanEditProc write
FcanEditProc;
  end;

V komponente jsem pridal novou property

property CanEditProps: TcanEditprops ....

a funguje to spravne, jen nejak nemuzu prijit na to, jak dosahnout toho, aby
byla v property editoru dostupna i ta procedurani property v eventech. Pokud
tu proceduralni property dam primo do hlavni komponenty, je to OK.

Diky za kazde nakopnuti,

MB


Odpovedá: Bronislav Klucka

3. 12. 2003 15:27

ne, ze bych tomu zcela rozumel, co's napsal, ale mas ji v published sekci
definice typu?

Brona
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Martin Burle
> Sent: Wednesday, December 03, 2003 11:23 AM
> To: delphi-l@clexpert.cz
> Subject: Zpristupneni property proceduralniho typu
>
>
> Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
> rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
> spravne) property. Udelal jsem si objekt, ktery drzi nejake
> property, vcetne
> jedne proceduralniho typu:
>
> TCanEditProps = class(TPersistent)
> private
> FcanEditProc: T FcanEditProc;
> ...
> published
> property CanEditProc: TCanEditProc read FcanEditProc write
> FcanEditProc;
> end;
>
> V komponente jsem pridal novou property
>
> property CanEditProps: TcanEditprops ....
>
> a funguje to spravne, jen nejak nemuzu prijit na to, jak
> dosahnout toho, aby
> byla v property editoru dostupna i ta procedurani property v
> eventech. Pokud
> tu proceduralni property dam primo do hlavni komponenty, je to OK.
>
> Diky za kazde nakopnuti,
>
> MB
>
>
>


Odpovedá: Bronislav Klucka

3. 12. 2003 15:55

jeste jsem zapomel, mas definovano:

type
  TCanEditProc=procedur OF OBJECT;
???

Brona

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Martin Burle
> Sent: Wednesday, December 03, 2003 11:23 AM
> To: delphi-l@clexpert.cz
> Subject: Zpristupneni property proceduralniho typu
>
>
> Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
> rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
> spravne) property. Udelal jsem si objekt, ktery drzi nejake
> property, vcetne
> jedne proceduralniho typu:
>
> TCanEditProps = class(TPersistent)
> private
> FcanEditProc: T FcanEditProc;
> ...
> published
> property CanEditProc: TCanEditProc read FcanEditProc write
> FcanEditProc;
> end;
>
> V komponente jsem pridal novou property
>
> property CanEditProps: TcanEditprops ....
>
> a funguje to spravne, jen nejak nemuzu prijit na to, jak
> dosahnout toho, aby
> byla v property editoru dostupna i ta procedurani property v
> eventech. Pokud
> tu proceduralni property dam primo do hlavni komponenty, je to OK.
>
> Diky za kazde nakopnuti,
>
> MB
>
>
>


Odpovedá: Martin Burle

3. 12. 2003 17:12



> ne, ze bych tomu zcela rozumel, co's napsal, ale mas ji v published sekci
> definice typu?
Ano,
Tohle je objekt, kteri "drzi" pribuzne property a sam je jednou z properties
"vetsiho" objektu ci komponenty (potomka datasetu). V puvodni zprave jsem
vynechal deklaraci toho proceduralniho typu, takze ted podrobneji:
type
 TcanEditProc = procedure(var blablabla; var blabla atd.) oj object;
 TCanEditProps = class(TPersistent)
   private
     FcanEditProc: T FcanEditProc;
    ...
   published
     property nejakyString: String ....
      property CanEditProc: TCanEditProc read FcanEditProc write
FcanEditProc;
   end;
 //hlavni objekt
 TmujDataSet = class(TdataSet)
private
 FcanEditProps: TcanEditProps;
....
published
 property CanEditProps: TcanEditProps read FcanEditProps write
FcanEditProps;
V property editoru vidim agregovanou property CanEditProps, po rozkliknuti
vsechny jeji property jako je nejakyString, krome CanEditproc, ktera ma
pochopitelne byt mezi Eventy (tam bych cekal take CanEditProps s +). Pomocny
CanEditprops se samozrejme vytvari a rusi v hlavnim objektu.
Kdyz to ale napisu bez pomocneho objektu, tj takto nejak:
 TmujDataSet = class(TdataSet)
private
 FcanEditProc: TcanEditProc;
....
published
property CanEditProc: TCanEditProc read FcanEditProc write FcanEditProc,
tak je novy event na svem miste...
MB

>
>
> Brona
>
> > -----Original Message-----
> > From: delphi-l-owner@clexpert.cz
> > [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Martin Burle
> > Sent: Wednesday, December 03, 2003 11:23 AM
> > To: delphi-l@clexpert.cz
> > Subject: Zpristupneni property proceduralniho typu
> >
> >
> > Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu
poradek,
> > rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to
rikam
> > spravne) property. Udelal jsem si objekt, ktery drzi nejake
> > property, vcetne
> > jedne proceduralniho typu:
> >
> > TCanEditProps = class(TPersistent)
> > private
> > FcanEditProc: T FcanEditProc;
> > ...
> > published
> > property CanEditProc: TCanEditProc read FcanEditProc write
> > FcanEditProc;
> > end;
> >
> > V komponente jsem pridal novou property
> >
> > property CanEditProps: TcanEditprops ....
> >
> > a funguje to spravne, jen nejak nemuzu prijit na to, jak
> > dosahnout toho, aby
> > byla v property editoru dostupna i ta procedurani property v
> > eventech. Pokud
> > tu proceduralni property dam primo do hlavni komponenty, je to OK.
> >
> > Diky za kazde nakopnuti,
> >
> > MB
> >
> >
> >
>
>
>
>


Odpovedá: delphin@post.cz

3. 12. 2003 19:27

Nevim, jestli jsem to pochopil spravne, ale mozna pomuze:
1) Zaregistrovat i ten objekt TCanEditProps, napriklad pomoci
RegisterNoIcon.
2) Pouzit SetSubComponent

----- Original Message -----
From: "Martin Burle" <mburle2@volny.cz>
To: <delphi-l@clexpert.cz>
Sent: Wednesday, December 03, 2003 11:23 AM
Subject: Zpristupneni property proceduralniho typu


> Ahoj, mam v komponente spoustu vlastnosti, a aby v tom byl trochu poradek,
> rozhodl jsem se soustredit souvisejici do jedne agregovane (snad to rikam
> spravne) property. Udelal jsem si objekt, ktery drzi nejake property,
vcetne
> jedne proceduralniho typu:
>
> TCanEditProps = class(TPersistent)
> private
> FcanEditProc: T FcanEditProc;
> ...
> published
> property CanEditProc: TCanEditProc read FcanEditProc write
> FcanEditProc;
> end;
>
> V komponente jsem pridal novou property
>
> property CanEditProps: TcanEditprops ....
>
> a funguje to spravne, jen nejak nemuzu prijit na to, jak dosahnout toho,
aby
> byla v property editoru dostupna i ta procedurani property v eventech.
Pokud
> tu proceduralni property dam primo do hlavni komponenty, je to OK.
>
> Diky za kazde nakopnuti,
>
> MB
>
>
>
>


Odpovedá: Martin Burle

5. 12. 2003 11:43

> 2) Pouzit SetSubComponent

Diky, toto pomohlo. Pro pripad, ze by to nekoho zajimalo: Jakmile je potreba
v komponente agregovat udalosti/zobrazit udalosti subkomponenty, musi se
pouzit TComponent, nestaci TPersistent.

MB